#ifndef MQ_GAS_CURVES_H
#define MQ_GAS_CURVES_H

#include <stdint.h>

// 清洁空气中的 Rs/Ro 比例
static const float MQ_RATIO_IN_CLEAN_AIR[] = {
    9.83f,  // MQ2
    60.0f,  // MQ3
    4.4f,   // MQ4
    6.5f,   // MQ5
    10.0f,  // MQ6
    27.0f,  // MQ7
    70.0f,  // MQ8
    9.6f,   // MQ9
    3.6f,   // MQ135
    3.6f    // MQ136
};

// 传感器类型
typedef enum {
    MQ2 = 0,
    MQ3,
    MQ4,
    MQ5,
    MQ6,
    MQ7,
    MQ8,
    MQ9,
    MQ135,
    MQ136
} MQ_Type;

// 曲线数据结构
typedef struct {
    const char* gas_name;  // 气体名称
    float a;               // 曲线参数 a
    float b;               // 曲线参数 b
} MQ_GasCurve;

// MQ2传感器支持的气体及其回归参数
static const MQ_GasCurve MQ2_Curves[] = {
    { "H2",      987.99f, -2.162f },    // 氢气
    { "LPG",     574.25f, -2.222f },    // 液化石油气
    { "CO",      36974.0f, -3.109f },   // 一氧化碳
    { "Alcohol", 3616.1f, -2.675f },    // 酒精
    { "Propane", 658.71f, -2.168f },    // 丙烷
};

// MQ3传感器支持的气体及其回归参数
static const MQ_GasCurve MQ3_Curves[] = {
    { "LPG",     44771.0f, -3.245f },   // 液化石油气
    { "CH4",     2e31f,    19.01f },    // 甲烷
    { "CO",      521853.0f, -3.821f },  // 一氧化碳
    { "Alcohol", 0.3934f,  -1.504f },   // 酒精
    { "Benzene", 4.8387f,  -2.68f },    // 苯
    { "Hexane",  7585.3f,  -2.849f },   // 己烷
};

// MQ4传感器支持的气体及其回归参数
static const MQ_GasCurve MQ4_Curves[] = {
    { "CH4",     1012.7f, -2.786f },    // 甲烷
    { "LPG",     3811.9f, -3.113f },    // 液化石油气
    { "Smoke",   3e7f,    -8.308f },    // 烟雾
    { "CO",      2e14f,   -19.05f },    // 一氧化碳
    { "Alcohol", 6e10f,   -14.01f },    // 酒精
};

// MQ5传感器支持的气体及其回归参数
static const MQ_GasCurve MQ5_Curves[] = {
    { "H2",      1163.8f, -3.874f },    // 氢气
    { "LPG",     80.897f, -2.431f },    // 液化石油气
    { "CH4",     177.65f, -2.560f },    // 甲烷
    { "CO",      491204.0f, -5.826f },  // 一氧化碳
    { "Alcohol", 97124.0f, -4.918f },   // 酒精
};

// MQ6传感器支持的气体及其回归参数
static const MQ_GasCurve MQ6_Curves[] = {
    { "H2",      88158.0f, -3.597f },   // 氢气
    { "LPG",     1009.2f,  -2.35f },    // 液化石油气
    { "CH4",     2127.2f,  -2.526f },   // 甲烷
    { "CO",      1e15f,    -13.5f },    // 一氧化碳
    { "Alcohol", 5e7f,     -6.017f },   // 酒精
};

// MQ7传感器支持的气体及其回归参数
static const MQ_GasCurve MQ7_Curves[] = {
    { "H2",      69.014f, -1.374f },    // 氢气
    { "LPG",     700000000.0f, -7.703f }, // 液化石油气
    { "CH4",     60000000000000.0f, -10.54f }, // 甲烷
    { "CO",      99.042f, -1.518f },    // 一氧化碳
    { "Alcohol", 40000000000000000.0f, -12.35f }, // 酒精
};

// MQ8传感器支持的气体及其回归参数
static const MQ_GasCurve MQ8_Curves[] = {
    { "H2",      976.97f, -0.688f },    // 氢气
    { "LPG",     10000000.0f, -3.123f }, // 液化石油气
    { "CH4",     80000000000000.0f, -6.666f }, // 甲烷
    { "CO",      2000000000000000000.0f, -8.074f }, // 一氧化碳
    { "Alcohol", 76101.0f, -1.86f },    // 酒精
};

// MQ9传感器支持的气体及其回归参数
static const MQ_GasCurve MQ9_Curves[] = {
    { "LPG",     1000.5f, -2.186f },    // 液化石油气
    { "CH4",     4269.6f, -2.648f },    // 甲烷
    { "CO",      599.65f, -2.244f },    // 一氧化碳
};

// MQ135传感器支持的气体及其回归参数
static const MQ_GasCurve MQ135_Curves[] = {
    { "CO",      605.18f, -3.937f },    // 一氧化碳
    { "Alcohol", 77.255f, -3.18f },     // 酒精
    { "CO2",     110.47f, -2.862f },    // 二氧化碳
    { "Toluen",  44.947f, -3.445f },    // 甲苯
    { "NH4",     102.2f,  -2.473f },    // 氨气
    { "Aceton",  34.668f, -3.369f },    // 丙酮
};

// MQ136传感器支持的气体及其回归参数
static const MQ_GasCurve MQ136_Curves[] = {
    { "H2S",     36.737f, -3.536f },    // 硫化氢
    { "NH4",     98.551f, -2.475f },    // 氨气
    { "CO",      503.34f, -3.774f },    // 一氧化碳
};

// 通用计算函数
//static inline float MQ_CalculatePPM(float rs_ro, float a, float b) {
//    // rs_ro = Rs / R0 比值
//    return a * powf(rs_ro, b);
//}






#endif // MQ_GAS_CURVES_H
